iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0
自我挑戰組

與 AI 共舞:打造更高效的日常系列 第 22

淺談 AI 繪圖工具:MidJourney 的實用技巧分享

  • 分享至 

  • xImage
  •  

前言

我今天原本計畫將昨天完成的 API,也就是上傳文字檔案,接著執行 ETL Pipeline,將檔案轉換成向量,並儲存到 Vector Stone 的那組功能。這次我打算採用 WebFlux 的風格來重寫 API,這也是我一開始設定的目標。一方面希望能提升效能,另一方面也希望藉此機會學習 WebFlux 的應用。畢竟之前在職場和專案中,我主要都是使用 Spring MVC,很少有機會接觸 WebFlux,這次可以說是一次刻意安排的練習機會。

檔案處理的難題

理想很豐滿,現實卻很骨感。在實作過程中,我遇到了一個令人抓狂的問題,主要發生在檔案處理的部分。

原本我以為,當檔案上傳時,使用 Mono<FilePart>,再透過 transferTo 方法將檔案儲存到暫存路徑就能輕鬆搞定。transferTo 是一個非同步操作,這表示我需要訂閱這個事件,確保檔案寫入完成後才能繼續進行後續處理。

為了達到這個目標,我使用了 Mono.defer 來進行延遲載入,確保 transferTo 完成後才會執行後面的處理邏輯。我的處理邏輯主要是 ETL Pipeline,我將這段邏輯包裝在 Mono.fromCallable 裡,以確保它在正確的時間點執行。

然而,現實總是喜歡給人「驚喜」,程式實際執行時卻總是遇到「檔案不存在」的錯誤。這個問題讓我陷入無止境的除錯循環,我不斷檢查程式碼,卻怎麼也找不到問題的根源。眼看鐵人賽的每日提交時間 deadline 就要到了,我只好先暫時放下這個部分,改用其他主題來「救急」。

探索 AI 繪圖的奇妙世界

既然程式碼一時卡關,不如先換個心情,來探索一下 AI 繪圖工具吧!我最推薦的莫過於 MidJourney,它的繪圖效果真的非常出色。除了 MidJourney 之外,還有開源的 Stable Diffusion,以及後起之秀 Flux。Flux 的效果也不錯,但參數調整比較複雜,所以我沒有花太多時間研究,畢竟我的理念是:如果付費工具能妥善解決我的問題,我會優先選擇付費方案。不過,Flux 可以透過前面提到的 GPU 算力平台 Replicate 來運行,即使你的電腦沒有高效能顯卡,也能利用這些平台進行運算。

另外,OpenAI 的 DALL·E 也是很值得嘗試的選擇。它的優點是操作簡便,我訂閱了 ChatGPT Plus 的方案,所以可以隨時生成圖像。就算你不是付費用戶,每天也有兩張圖片的免費額度。如果你想找免費的圖片生成工具,ChatGPT 絕對是個好選擇。此外,微軟爸爸的 Image Creator 也是基於 DALL·E 的技術開發的,你也可以考慮看看。

淺談 MidJourney 的使用技巧

回到 MidJourney,它最初只有 Discord 版本,現在也推出網頁版了,操作起來更加便捷。可惜的是,MidJourney 是需要付費使用的,沒有提供免費試用。在使用 MidJourney 繪圖時,撰寫 Prompt 需要遵循一些基本的語法結構,主要可以分為四個部分:

  1. 主體:你想要繪製的核心物件或場景。
  2. 風格:繪畫的氛圍或藝術流派,例如日式動漫、極簡設計、草圖風格、古典印象派、立體主義等等。
  3. 渲染:指的是畫作的質感,例如指定使用炭筆、原子筆、油畫、水彩等等不同媒材來呈現。
  4. 額外參數:包含光源、色調、攝影角度等等細節。舉例來說,你可以指定暖色系的光線,或是希望畫面呈現仰視或俯視的角度。

進階參數的妙用

此外 MidJourney 提供了多種進階參數,讓你的創作更具變化和獨特性:

  • --ar:調整圖片的長寬比例。
  • --no:排除您不想要的元素,使生成的圖片更符合您的期待。
  • --style:調整圖片的藝術風格。參數值越高,圖片的藝術性越強,但提示詞的精確度可能會下降,需要在美感和準確性之間找到平衡點。
  • --chaos:增加生成圖片的隨機性,為您的創作帶來更多驚喜和可能性。

此外,還有一個容易被忽略的小技巧:您可以在提示詞中使用「::」來設定權重,藉此更精準地控制生成圖像的內容和風格。另外也可以善用「以圖生圖」功能,讓您的創作更添趣味。

總結

技術學習之路,充滿未知的挑戰與驚喜。雖然在 WebFlux 檔案處理方面遇到瓶頸,但換個主題投入 AI 繪圖領域,也讓我發現了另一片廣闊天地。明日,我計畫持續深入研究 WebFlux,找出「檔案不存在」錯誤的根本原因。同時,也會持續關注 AI 繪圖的發展,探索更多有趣的應用。

如果你對 AI 繪圖感興趣,建議你多上網參考一些案例,像是 Twitter 或 Reddit 上的國外使用者經常分享有趣的提示詞。透過這些分享,你可以學習更多關鍵詞的使用技巧,為你的創作帶來更多靈感。


上一篇
Spring AI 驅動的 ETL 流程:構建文本上傳工作流並實現 RAG
下一篇
Spring AI 應用解析:探索 Naive RAG 的核心流程與基本實作
系列文
與 AI 共舞:打造更高效的日常30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言